Various mechanisms exist to allow computers and executing software applications to interact. For example, remote procedure call (“RPC”) protocols have long existed that allow a program on one computer to cause a program on another computer to be executed. In a similar manner, various object-oriented architectures such as CORBA (“Common Object Request Broker Architecture”) and DCOM (“Distributed Component Object Model”) provide remote execution capabilities. In addition, various middleware programs have been implemented to connect separate applications (often of distinct types and from unrelated sources) to allow communication. For example, various EDI (“Electronic Data Interchange”) networks exist that provide standard mechanisms to allow a computer system of one user of the network to send data to a computer system of another user of the network.
The widespread popularity of the World Wide Web (“Web”) has provided additional opportunities for computers to inter-communicate. For example, much current Web use involves users interactively requesting Web pages from Web servers (e.g., via Web browser applications executing on user computers) and receiving the requested information in response. In addition, there is also growing use of the Web to support the programmatic interaction of remote applications to exchange information via defined APIs (“application program interfaces”), such as via Web services. Web services allow heterogeneous applications and computers to interact, and can be defined and implemented using a variety of underlying protocols and techniques. For example, some Web service implementations return data in XML (“eXtensible Markup Language”) format using HTTP (“HyperText Transport Protocol”) in response to a Web service invocation request specified as a URI (“Uniform Resource Identifier”), such as a URL (“Uniform Resource Locator”) that includes a specified operation and one or more query parameters. In other implementations, additional underlying protocols are used for various purposes, such as SOAP (“Simple Object Access Protocol”) for standard message exchange, WSDL (“Web Services Description Language”) for description of service invocations, and UDDI (“Universal Description, Discovery, and Integration service”) for discovery of available services.
Although Web services and other mechanisms allow various applications and computers to interact, various problems exist with the use of such interaction mechanisms. For example, if a developer of an application would like to incorporate the use of fee-based Web services that are available from third parties in the application, but in a manner that the end users of the application will be responsible for corresponding fees, such functionality is typically difficult and costly to implement. In addition, many fee-based Web services may offer relatively limited capabilities, and a user may desire to offer to others a new fee-based Web service with enhanced capabilities based on use of one or more other third-party fee-based Web services, but such functionality is also typically difficult and costly to implement. Such functionality may include, for example, mechanisms to track the use of the various services and determine corresponding fees, as well as mechanisms to collect specified payments from users of the services and to allocate such payments among the various service providers.